import wepy from 'wepy'
// import Dialog from '../.././assets/vant/dialog/dialog'

export default class extends wepy.mixin {
  data = {
    // 购物车商品列表
    cart: []
  }

  onLoad() {
    this.cart = this.$parent.globalData.cart
  }

  onShow() {
    // setTabBarBadge只有在tabbar页面调用才能生效,此处需调用一次该函数
    // 五个tabbar页面都需要该段代码,因此也可以定义一个common.js,将该段代码抽离出去,然后通过mixins注入外部逻辑
    // mixins = [ mix, common]
    // 当然,如果某些页面需要使用单独的onShow()函数
    this.$parent.renderCartBadge()
  }

  methods = {
    // 监听商品数量变化的事件
    countChanged(e) {
      // 获取到变化之后最新的数量值
      // console.log(e.detail)
      const count = e.detail
      // 商品的Id值
      // console.log(e.target.dataset.id)
      const id = e.target.dataset.id
      this.$parent.updateGoodsCount(id, count)
    },

    // 当商品前面的复选框，选中状态变化，会触发这个函数
    statusChanged(e) {
      // console.log(e)
      // 当前最新的选中状态
      const status = e.detail
      // 当前点击项对应的商品Id
      const id = e.target.dataset.id
      this.$parent.updateGoodsStatus(id, status)
    },

    // 根据ID删除对应的商品
    close(id) {
      //   Dialog.confirm({
      //     message: '确定删除该商品吗?'
      //   }).then(() => {
      //     this.$parent.removeGoodsById(id)
      //     this.$apply()
      //   }).catch(err => err)
      let that = this
      wx.showModal({
        title: '温馨提示',
        content: '确认删除该商品吗?',
        success(res) {
          if (res.confirm) {
            // success回调函数里面this指向需要更改,(或者使用箭头函数)
            that.$parent.removeGoodsById(id)
            that.$apply()
          }
        }
      })
    },

    // 监听全选复选框值改变的事件
    onFullCheckChanged(e) {
      // console.log(e.detail)
      this.$parent.updateAllGoodsStatus(e.detail)
    },

    // 提交订单
    submitOrder() {
      if (this.$parent.globalData.total === 0) {
        return wepy.baseToast('订单不能为空!')
      }
      wepy.navigateTo({
        url: '/pages/order'
      })
    },

    // 点击图片跳转到商品详情页
    goToGoodsDetail(id) {
      wepy.navigateTo({
        url: `/pages/goods_detail?goods_id=${id}`
      })
    }
  }

  computed = {
    // 判断购物车是否为空
    isEmpty() {
      if (this.cart.length <= 0) {
        return true
      }
      return false
    },

    // 总价格，单位是 分
    amount() {
      let total = 0 // 单位是 元
      this.cart.forEach(x => {
        if (x.isCheck) {
          total += x.price * x.count
        }
      })
      return total * 100
    },

    // 是否全选
    isFullChecked() {
      // 获取所有商品的个数
      const allCount = this.cart.length
      let c = 0
      this.cart.forEach(x => {
        if (x.isCheck) {
          c++
        }
      })
      return allCount === c
    }
  }
}
